fixed: draw css background and borders
authorPaolo Borelli <pborelli@gnome.org>
Sat, 2 Nov 2013 11:21:30 +0000 (12:21 +0100)
committerPaolo Borelli <pborelli@gnome.org>
Sun, 3 Nov 2013 13:13:16 +0000 (14:13 +0100)
https://bugzilla.gnome.org/show_bug.cgi?id=711324

gtk/gtkfixed.c

index ec3467ffe3ef86bf6da5f5e125f8cc534e55205e..1d2ab3f7725924a699ad5247c8f8d0affd005643 100644 (file)
@@ -99,6 +99,8 @@ static void gtk_fixed_get_preferred_height (GtkWidget *widget,
                                             gint      *natural);
 static void gtk_fixed_size_allocate (GtkWidget        *widget,
                                      GtkAllocation    *allocation);
+static gboolean gtk_fixed_draw      (GtkWidget        *widget,
+                                     cairo_t          *cr);
 static void gtk_fixed_add           (GtkContainer     *container,
                                      GtkWidget        *widget);
 static void gtk_fixed_remove        (GtkContainer     *container,
@@ -135,6 +137,7 @@ gtk_fixed_class_init (GtkFixedClass *class)
   widget_class->get_preferred_width = gtk_fixed_get_preferred_width;
   widget_class->get_preferred_height = gtk_fixed_get_preferred_height;
   widget_class->size_allocate = gtk_fixed_size_allocate;
+  widget_class->draw = gtk_fixed_draw;
 
   container_class->add = gtk_fixed_add;
   container_class->remove = gtk_fixed_remove;
@@ -486,6 +489,22 @@ gtk_fixed_size_allocate (GtkWidget     *widget,
     }
 }
 
+static gboolean
+gtk_fixed_draw (GtkWidget *widget,
+                cairo_t   *cr)
+{
+  GtkStyleContext *context;
+  GtkAllocation alloc;
+
+  context = gtk_widget_get_style_context (widget);
+  gtk_widget_get_allocation (widget, &alloc);
+
+  gtk_render_background (context, cr, 0, 0, alloc.width, alloc.height);
+  gtk_render_frame (context, cr, 0, 0, alloc.width, alloc.height);
+
+  return GTK_WIDGET_CLASS (gtk_fixed_parent_class)->draw (widget, cr);
+}
+
 static void
 gtk_fixed_add (GtkContainer *container,
                GtkWidget    *widget)